#pragma once
#ifndef Game_GameEngine_GameEngine_h
#define Game_GameEngine_GameEngine_h

#include "IGameEngine.h"

namespace Game {

namespace Common {
class SceneManager;
class EntityLogicManager;
}

namespace Logic {
class SceneManagerLogic;
}

namespace GameEngine {

using namespace Game::Common;
using namespace Game::Logic;

class GameEngine : public IGameEngine {
public:
    GameEngine();
    virtual ~GameEngine();

    virtual EntityLogicManager* GetGameLogicManager() const;
    virtual SceneManager* GetSceneManager() const;

    virtual void Finalize();
    virtual void Initialize();
    virtual void Update(const double& fTime, const float& fElapsedTime);
private:
    EntityLogicManager* entityLogicManager;
    SceneManager* sceneManager;
    SceneManagerLogic* sceneManagerLogic;
};

}

}

#endif
